Programs that depend on a lot of different subprograms tend to aggregate too many responsibilities, and inevitably become harder to understand and
therefore to maintain. Above a specific threshold, it is strongly advised to refactor the program into several smaller programs which focus on
well-defined topics.